Data Structure

R은 파이썬, 자바, C 등과 달리 시작 인덱스가 1이다.
1. Vector(벡터)
벡터는 타입이 같은 여러 데이터를 하나의 행으로 저장하는 1차원 데이터 구조이다.
concatenate(연결)의 c를 통해서 데이터를 묶을 수 있다.
> v4<-c(3, TRUE, FALSE)
> v4
[1] 3 1 0
> v5<-c('a', 1, TRUE)
> v5
[1] "a"    "1"    "TRUE"
벡터를 생성할 때 c 안에 콤마를 구분자로 써서 성분을 직접 입력할 수 있다.
콜론(:)을 이용해서 시작값과 끝값을 지정해 벡터를 생성할 수도 있다.
> v1<-c(1:6)
> v1
[1] 1 2 3 4 5 6
2. Matrix(행렬)
행렬은 2차원 구조를 가진 벡터이다.(모든 데이터는 같은 타입, 타입이 다른 경우 자동으로 타입 변환)
matrix를 사용하여 행렬을 만들 때, nrow와 ncol을 지정해서 행렬의 행, 열의 수를 결정할 수 있다.
> m1<-matrix(c(1:6), nrow=2)
> m1
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> m2<-matrix(c(1:6), ncol=2)
> m2
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
matrix를 사용해서 행렬을 만들 경우 행렬의 값들이 열로 저장된다.
byrow 옵션에 T(TRUE)를 지정하면, 행으로 저장된다.)
> m3<-matrix(c(1:6), nrow=2, byrow=T)
> m3
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
dim() 함수을 이용해서 벡터에 차원을 전달해서 행렬을 만들 수 있다.
> v1=c(1:6)
> v1
[1] 1 2 3 4 5 6
> dim(v1)<-c(2, 3)
> v1
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
3. Array(배열)
3차원 이상의 벡터를 배열이라고 한다.(모든 같은 타입으로 구성)
array를 통해서 배열을 만들 수 있으나, 차원의 구조를 나타내는 dim 옵션을 명시해야 한다.
> a1<-array(c(1:12), dim=c(2, 3 ,2))
> a1
, , 1

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

, , 2

     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12
dim() 함수를 이용해서 벡터에 차원을 지정해 배열을 만들 수 있다.
> a2<-c(1:12)
> dim(a2)<-c(2, 3, 2)
4. List(리스트)
리스트는 데이터 타입, 데이터 구조에 관계없이 사용자가 원하는 모든 것을 저장할 수 있는 자료구조이다.
list()를 이용해서 리스트를 만들 수 있다.
> L<-list()
> L[[1]]<-5
> L[[2]]<-c(1:6)
> L[[3]]<-matrix(c(1:6), nrow=2)
> L[[4]]<-array(c(1:12), dim=c(2, 3, 2))
> L
[[1]]
[1] 5

[[2]]
[1] 1 2 3 4 5 6

[[3]]
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

[[4]]
, , 1

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

, , 2

     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12

5. 데이터프레임
데이터프레임은 데이터 분석을 위한 2차원 구조를 갖는 관계형 데이터 구조이다.
행렬과 같은 모양을 갖지만, 여러개의 벡터로 구성되어 있기 때문에, 각 열은 서로 다른 타입의 데이터를 가질 수 있다.
> v1<-c(1, 2, 3)
> v2<-c('a', 'b', 'c')
> df1<-data.frame(v1, v2)
> df1
  v1 v2
1  1  a
2  2  b
3  3  c